#pragma once

#include <QPointF>
#include <GraphicsBaseItemData.h>
#include <memory>

// 移动策略接口
class MoveStrategy
{
public:
	MoveStrategy(GraphicsBaseItemData& data);

	GraphicsBaseItemData& getItemData() { return m_data; }
	// 左右边界限制
	virtual void horizontalLimit(const QPointF& newPos, QPointF& returnPos) = 0;

	// 上下边界限制
	virtual void verticalLimit(const QPointF& newPos, QPointF& returnPos) = 0;
private:
	GraphicsBaseItemData& m_data;
};

using MoveStrategyPtr = std::shared_ptr<MoveStrategy>;
